package com.times;

import java.time.*;
import java.time.temporal.*;
import java.util.*;
import java.util.stream.Collectors;

public class TimeOperationKit {

    /**
     *  添加时间
     * @param localDatetime
     * @param unit
     * @param amountToAdd
     * @return
     */
    public static LocalDateTime plus(LocalDateTime localDatetime, TemporalUnit unit, long amountToAdd) {
        return localDatetime.plus(amountToAdd, unit);
    }

    /**
     *  减少时间
     * @param localDatetime
     * @param unit
     * @param amountToAdd
     * @return
     */
    public static LocalDateTime minus(LocalDateTime localDatetime, TemporalUnit unit, long amountToAdd) {
        return localDatetime.minus(amountToAdd, unit);
    }

    /**
     * 添加年
     * @param localDatetime
     * @param years
     * @return
     */
    public static LocalDateTime plusYears(LocalDateTime localDatetime, long years) {
        return localDatetime.plusYears(years);
    }


    /**
     * 添加月
     * @param localDatetime
     * @param months
     * @return
     */
    public static LocalDateTime plusMonths(LocalDateTime localDatetime, long months) {
        return localDatetime.plusMonths(months);
    }

    /**
     * 添加日
     * @param localDatetime
     * @param days
     * @return
     */
    public static LocalDateTime plusDays(LocalDateTime localDatetime, long days) {
        return localDatetime.plusDays(days);
    }
    /**
     * 添加周
     * @param localDatetime
     * @param days
     * @return
     */
    public static LocalDateTime plusWeeks(LocalDateTime localDatetime, long days) {
        return localDatetime.plusWeeks(days);
    }

    /**
     * 添加小时
     * @param localDatetime
     * @param hours
     * @return
     */
    public static LocalDateTime plusHours(LocalDateTime localDatetime, long hours) {
        return localDatetime.plusHours(hours);
    }

    /**
     * 添加分钟
     * @param localDatetime
     * @param minutes
     * @return
     */
    public static LocalDateTime plusMinutes(LocalDateTime localDatetime, long minutes) {
        return localDatetime.plusMinutes(minutes);
    }

    /**
     * 添加秒
     * @param localDatetime
     * @param seconds
     * @return
     */
    public static LocalDateTime plusSeconds(LocalDateTime localDatetime, long seconds) {
        return localDatetime.plusSeconds(seconds);
    }

    /**
     * 添加纳秒
     * @param localDatetime
     * @param nanos
     * @return
     */
    public static LocalDateTime plusNanos(LocalDateTime localDatetime, long nanos) {
        return localDatetime.plusNanos(nanos);
    }

    /**
     * 减少年
     * @param localDatetime
     * @param years
     * @return
     */
    public static LocalDateTime minusYears(LocalDateTime localDatetime, long years) {
        return localDatetime.minusYears(years);
    }

    /**
     * 减少月
     * @param localDatetime
     * @param months
     * @return
     */
    public static LocalDateTime minusMonths(LocalDateTime localDatetime, long months) {
        return localDatetime.minusMonths(months);
    }

    /**
     * 减少日
     * @param localDatetime
     * @param days
     * @return
     */
    public static LocalDateTime minusDays(LocalDateTime localDatetime, long days) {
        return localDatetime.minusDays(days);
    }

    /**
     * 减少周
     * @param localDatetime
     * @param weeks
     * @return
     */
    public static LocalDateTime minusWeeks(LocalDateTime localDatetime, long weeks) {
        return localDatetime.minusWeeks(weeks);
    }

    /**
     * 减少小时
     * @param localDatetime
     * @param hours
     * @return
     */
    public static LocalDateTime minusHours(LocalDateTime localDatetime, long hours) {
        return localDatetime.minusHours(hours);
    }

    /**
     * 减少分钟
     * @param localDatetime
     * @param minutes
     * @return
     */
    public static LocalDateTime minusMinutes(LocalDateTime localDatetime, long minutes) {
        return localDatetime.minusMinutes(minutes);
    }
    /**
     * 减少秒
     * @param localDatetime
     * @param seconds
     * @return
     */
    public static LocalDateTime minusSeconds(LocalDateTime localDatetime, long seconds) {
        return localDatetime.minusSeconds(seconds);
    }

    /**
     * 减少纳秒
     * @param localDatetime
     * @param nanos
     * @return
     */
    public static LocalDateTime minusNanos(LocalDateTime localDatetime, long nanos) {
        return localDatetime.minusNanos(nanos);
    }

    /**
     * 修改时间
     * @param localDatetime
     * @param adjuster
     * @return
     */
    public static LocalDateTime with(LocalDateTime localDatetime,TemporalAdjuster adjuster) {
        return localDatetime.with(adjuster);
    }

    /**
     * 修改年
     * @param localDatetime
     * @param year
     * @return
     */
    public static LocalDateTime withYear(LocalDateTime localDatetime,int year) {
        return localDatetime.withYear(year);
    }

    /**
     * 修改月
     * @param localDatetime
     * @param month
     * @return
     */
    public static LocalDateTime withMonth(LocalDateTime localDatetime,int month) {
        return localDatetime.withMonth(month);
    }

    /**
     * 修改日期
     * @param localDatetime
     * @param dayOfMonth
     * @return
     */
    public static LocalDateTime withDayOfMonth(LocalDateTime localDatetime,int dayOfMonth) {
        return localDatetime.withDayOfMonth(dayOfMonth);
    }

    /**
     * 修改日期
     * @param localDatetime
     * @param dayOfYear
     * @return
     */
    public static LocalDateTime withDayOfYear(LocalDateTime localDatetime,int dayOfYear) {
        return localDatetime.withDayOfYear(dayOfYear);
    }
    /**
     * 修改时间
     * @param localDatetime
     * @param hour
     * @return
     */
    public static LocalDateTime withHour(LocalDateTime localDatetime,int hour) {
        return localDatetime.withHour(hour);
    }

    /**
     * 修改时间
     * @param localDatetime
     * @param minute
     * @return
     */
    public static LocalDateTime withMinute(LocalDateTime localDatetime,int minute) {
        return localDatetime.withMinute(minute);
    }

    /**
     * 修改时间
     * @param localDatetime
     * @param second
     * @return
     */
    public static LocalDateTime withSecond(LocalDateTime localDatetime,int second) {
        return localDatetime.withSecond(second);
    }


}
